///*******************************************************************************
// * Copyright (c) 2005, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.performance;
//
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.net.URL;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipInputStream;
//import junit.framework.Assert;
//import org.eclipse.core.resources.IFile;
//import org.eclipse.core.resources.IProject;
//import org.eclipse.core.resources.ResourcesPlugin;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.core.runtime.NullProgressMonitor;
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.test.performance.PerformanceTestCase;
//import org.eclipse.ui.IViewPart;
//import org.eclipse.ui.IWorkbenchPage;
//import org.eclipse.ui.PartInitException;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.views.navigator.ResourceNavigator;
//import org.osgi.framework.Bundle;
//
///**
// * This class/test was originally written for WTP bug 106158, and adapted to a
// * generic "platform" test case, since some of the problem was due to bug
// * 107121
// * 
// * Thanks for Jeffrey Liu (jeffliu@ca.ibm.com) who wrote the test for WTP.
// * 
// * And, thanks to Eric Glass <ericglass@maximus.com> for opening bug 106158
// * (100% CPU for over 3 minutes opening a directory in the Navigator view with
// * over 2000 HTML files) https://bugs.eclipse.org/bugs/show_bug.cgi?id=106158
// * and for providing 2500 "generic" HTML files for the original test case in
// * WTP.
// * 
// * modified by David Williams for platform level test that does not depend on
// * WTP or, for that matter, any meaningful content type. The content type
// * assumed there is designed simply to "take a while" to complete, if asked
// * for its properties.
// * 
// * Note, since this test companion "ContentDescriberForTestsOnly", simply uses
// * "sleep" to simulate computations, it only effects Elapsed Time (not CPU
// * Time).
// * 
// */
//public class OpenNavigatorFolderTest extends PerformanceTestCase {
//	/*
//	 * performance testcase for bug 106158
//	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=106158
//	 */
//	public void testOpenNavigatorFolder() {
//		IProject project = createProject("testViewAndContentTypeProject");
//		Bundle bundle = Platform.getBundle("org.eclipse.ui.tests");
//		URL url = bundle.getEntry("data/testContentType.zip");
//		ZipInputStream zis = null;
//		try {
//			zis = new ZipInputStream(url.openStream());
//			ZipEntry entry = zis.getNextEntry();
//			while (entry != null) {
//				ByteArrayOutputStream baos = new ByteArrayOutputStream();
//				try {
//					byte[] b = new byte[2048];
//					int read = zis.read(b);
//					while (read != -1) {
//						baos.write(b, 0, read);
//						read = zis.read(b);
//					}
//				}
//				catch (IOException e) {
//					Assert.fail(e.getMessage());
//				}
//				finally {
//					try {
//						baos.close();
//					}
//					catch (IOException e) {
//						Assert.fail(e.getMessage());
//					}
//				}
//				IFile file = project.getFile(entry.getName());
//				ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
//				try {
//					if (!file.exists())
//						file.create(bais, true, new NullProgressMonitor());
//					else
//						file.setContents(bais, true, false, new NullProgressMonitor());
//				}
//				catch (CoreException e) {
//					Assert.fail(e.getMessage());
//				}
//				finally {
//					try {
//						bais.close();
//					}
//					catch (IOException e) {
//						Assert.fail(e.getMessage());
//					}
//				}
//				entry = zis.getNextEntry();
//			}
//		}
//		catch (IOException e) {
//			Assert.fail(e.getMessage());
//		}
//		finally {
//			try {
//				if (zis != null) {
//					zis.close();
//				}
//			}
//			catch (IOException e) {
//				Assert.fail(e.getMessage());
//			}
//		}
//		startMeasuring();
//		IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
//		IViewPart view = null;
//		try {
//			view = activePage.showView("org.eclipse.ui.views.ResourceNavigator");
//		}
//		catch (PartInitException e) {
//			Assert.fail(e.getMessage());
//		}
//		ResourceNavigator navigatorView = null;
//		try {
//			navigatorView = (ResourceNavigator) view;
//		}
//		catch (ClassCastException e) {
//			Assert.fail(e.getMessage());
//		}
//		navigatorView.getTreeViewer().expandAll();
//		stopMeasuring();
//		commitMeasurements();
//		assertPerformance();
//	}
//
//	private IProject createProject(String name) {
//		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name);
//		if (!project.exists()) {
//			try {
//				project.create(new NullProgressMonitor());
//				project.open(new NullProgressMonitor());
//			}
//			catch (CoreException e) {
//				Assert.fail(e.getMessage());
//			}
//		}
//		return project;
//	}
//}
